#define _CRT_SECURE_NO_WARNINGS 1
#define INITSIZE_USER 2
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#include "ignore_menu.h"//登录菜单
#include "LinkList.h" //链表存储结构
//初始给2个用户，一个是管理员账号  一个是学生账号（用于测试）
/*
	管理员账号：
		用户名：administrator
		密码为：abc123
	学生账号：
		用户名：students
		密码为：123

*/;
void SaveData(Node* head);
typedef struct Users {
	char user_id[20];
	char user_password[20];
}Users;
//定义用户的全局变量
Users user;
// 活动信息结构
/*
typedef struct student_action {
	//活动时间、活动内容、活动场地 -- 2005.05.29
	char action_date[11];
	char action_main[100];
	char action_address[100];
	//报名人数
	int people_num;
}StudentAction;
// 活动信息的链表结构
typedef struct Node {
	StudentAction data;
	struct Node* next;
}Node;
*/


//学生活动信息管理系统界面
void StudentA_Menu(int system) {
	switch (system) {
	case 1:
		printf("----------------------------------------\n");
		printf("----------------------------------------\n");
		printf("-------1、活动信息录入功能--输入-----\n");
		printf("-------2、增加活动信息----------------\n");
		printf("-------3、活动信息浏览--输出----------\n");
		printf("-------4、按照活动名称进行查询-------\n");
		printf("-------5、活动信息删除----------------\n");
		printf("-------6、活动信息内容修改------------\n");
		printf("-------7、活动信息保存-----------------\n");
		printf("-------8、活动信息读取-----------------\n");
		printf("----------------------------------------\n");
		printf("----------------------------------------\n");
		break;
	case 2:
		printf("----------------------------------------\n");
		printf("----------------------------------------\n");
		printf("-------1、浏览活动信息----------------\n");
		printf("-------2、增加活动信息----------------\n");
		printf("----------------------------------------\n");
		printf("----------------------------------------\n");
		break;
	}
}
//注册操作
void ignore_user() {
	/*
	char userid[20];
	char userpassword[20];
	printf("请输入你要注册的用户名： ");
	gets(userid);
	strcpy(users[0].user_id, userid);
	printf("请输入你要注册的密码：  ");
	 gets(userpassword);
	 strcpy(users[0].user_password, userpassword);
	printf("yes");
	*/
}
//登录操作
int  ignore(int i) {
	int parnder;
ig:
	printf("输入用户名    ");
	char userid[20];
	scanf("%s", userid);
	
	char userpassword[20];
	printf("输入密码:      ");
	scanf("%s", userpassword);
	switch (i) {
	case 1:
		if (strcmp(userid, "administrator") == 0 && strcmp(userpassword, "abc123")==0) {
			printf("欢迎你，亲爱的管理员\n");
			parnder = 1;
			return parnder;
		}
		else {
			printf("密码错误,请重试！\n");
			goto ig;
		}
		break;
	case 2:
		if (strcmp(userid, "students") == 0 && strcmp(userpassword, "123")==0) {
			printf("欢迎你，xx同学\n");
			parnder = 2;
			return parnder;
		}
		else {
			printf("密码错误,请重试！\n");
			goto ig;
		}
		break;
	}
} //返回parnder


//-----------------------基本操作-------------------------------
//1、活动信息录入功能--输入(input)(循环)
void inPutData(Node* L) {
	static int i = 1;
	Node* fresh = (Node*)malloc(sizeof(Node)); //当前结点用于存放要输入的数据
	fresh->next = NULL;
	fresh->data.bh = i;
	i++;
	//system("pause");
	printf("请输入要增加的活动时间\n");
	scanf("%s", fresh->data.action_date);
	printf("请输入要增加的活动名称\n");
	scanf("%s", fresh->data.action_main);
	printf("请输入要增加的活动地点\n");
	scanf("%s", fresh->data.action_address);
	fresh->data.people_num = 0;
	//初始状态下活动的报名人数为0

	Node* move = L;
	while (move->next != NULL) {
		move = move->next;
	}
	move->next = fresh;
	SaveData(L);
	system("pause");
	system("cls");

}

//2、增加活动信息；
//3、活动信息浏览--输出；
void PrintData(Node* L) {
	Node* move = L->next;
	while (move != NULL) {
		printf("活动编号为:\t");
		printf("%2d\n", move->data.bh);

		printf("活动时间为:\t");
		printf("%s\n", move->data.action_date);

		printf("活动名称为:\t");
		printf("%s\n", move->data.action_main);

		printf("活动地点为:\t");
		printf("%s\n", move->data.action_address);

		printf("报名人数为:\t");
		printf("%d\n人", move->data.people_num);

		putchar('\n');

		move = move->next;
	}
	system("pause");
	system("cls");

}
//4、按照活动名称进行查询；
void FindData(Node* L) {
	int num;
	printf("请输入你要查找的活动编号： ");
	scanf("%d", &num);
	Node* move = L->next;
	while (move != NULL) {
		if (move->data.bh == num) {
			printf("活动编号为:\t");
			printf("%2d\n", move->data.bh);

			printf("活动时间为:\t");
			printf("%s\n", move->data.action_date);

			printf("活动名称为:\t");
			printf("%s\n", move->data.action_main);

			printf("活动地点为:\t");
			printf("%s\n", move->data.action_address);

			printf("报名人数为:\t");
			printf("%d\n人", move->data.people_num);

			putchar('\n');
			system("pause");
			return;
		}
		move = move->next;
	}
	printf("没有找到该活动的信息！");
			system("pause");
}
//5、活动信息删除；
void DeleteData(Node* L) {
	printf("请输入你要删除的活动信息编号：   ");
	int num;
	scanf("%d", &num);
	Node* move = L;
	while (move->next != NULL) {
		if (move->next->data.bh == num) {
			Node* fresh = move->next;
			move->next = fresh->next;
			free(fresh);
			fresh = NULL;
			printf("删除成功！");
			return;
			system("pause");
		}
		move = move->next;
	}
	printf("删除失败!");
	return;
}
//6、活动信息内容修改。
void UpdataData(Node* L) {
	printf("请输入要修改的活动信息编号：  ");
	int num;
	scanf("%d", &num);
	printf("请输入你要修改的活动信息：   ");
	char name[100];
	scanf("%s", name);
	Node* move = L->next;
	while (move != NULL) {
		if (move->data.bh == num) {
			strcpy(move->data.action_main ,name);
			printf("修改成功！");
			system("pause");
			return;
		}
		move = move->next;
	}
	system("pause");

}
//7、数据保存
void SaveData(Node* head) {
	FILE* file;
	file = fopen("./stu.txt", "w");
	Node* move = head->next;
	while (move != NULL) {
		if (fwrite(&move->data, sizeof(StudentAction), 1, file) != 1) {
			printf("写入文件失败！");
			fclose(file);
			return;
		}
		move = move->next;
	}
	printf("写入成功！\n");
	fclose(file);
	system("pause");
	return;
}
//8、数据读取
void ReadData(Node* head) {
	FILE* file = fopen("./stu.txt", "r");
	if (!file) {
		printf("未找到活动信息文件！\n");
		return;
	}
	//新建一个结点用于存储数据
	Node* fresh = malloc(sizeof(Node));
	fresh->next = NULL;
	Node* move = head;
	while (fread(&fresh->data,sizeof(StudentAction),1,file)==1) {
		move->next = fresh;
		move = fresh;
		Node* fresh = malloc(sizeof(Node));
		fresh->next = NULL;
	}
	free(fresh);
	fclose(file);
	printf("读取成功！");
	system("pause");

}


int main(void) {
	//Menu();
	int user_select_igno,systems=1,user_action;
	char ch;
	//scanf_s("%d", &user_select_igno);
	//switch(1) 
	//{
	//case 1:systems = ignore(1); break;
	//case 2:systems = ignore(2); break;
	//}
	/*---------------------------链表数据初始化-------------------------------*/
	Node* L;
	L = (Node*)malloc(sizeof(Node));
	L->next = NULL;
	/*--------------------------------------------------------------------------*/
	//主程序
	while (1) {
		StudentA_Menu(systems);
		printf("请输入要进行的操作:   ");
		scanf("%d", &user_action);
		if (systems == 1) {
			switch (user_action) {
			case 1:
				inPutData(L);
				break;
			case 2:break;
			case 3:PrintData(L);
				break;
			case 4:FindData(L);
				break;
			case 5:DeleteData(L);
				break;
			case 6:UpdataData(L);
				break;
			case 7:SaveData(L);
				break;
			case 8:ReadData(L);
				break;
			default:exit(0);
			}
		}
		else {
			switch (user_action) {
			case 1:PrintData(L);
				break;
			case 2:break;
			default:exit(0);
			}
		}
		system("cls");
	}
	return 0;
}